1. Field of the Invention
This invention relates generally to database server systems for managing access requests from concurrent user application programs and specifically to an efficient database connection management system employing shared connection objects each for concurrent connection of a plurality of user applications to a single database.
2. Description of the Related Art
In a data processing system complex servicing many databases and many concurrent users, a user application (UA) demands access to a specified database by issuing a database access request. Such requests may include, for instance, simple catalog lookup requests, herein denominated as database "schema queries", or transactions and combinations of transactions, herein denominated "units of work" (UOWs) that operate to both read and change specified records in the database.
The state of the art and data processing systems supporting multiple concurrent processes can be appreciated with reference to, for instance, An Introduction to Operating Systems, Harvey M. Deitel, 2nd ed., Addison-Wesley Publishing Company, Inc., 1990, (N.B., Ch. 3, "Process Concepts"). Also, reference is made to Computer Architecture Parallel Processing, Kai Hwang, et al., McGraw-Hill, Inc., 1984 (N.B., Ch. 8 "Multiprocessing Control and Algorithms") and The Design of the UNIX Operating System, Maurice J. Bach, Prentice-Hall, Inc., 1986 (N.B., Ch. 7 "Process Control" and Ch. 12 "Multiprocessor Systems").
Whenever a UA requests access to a particular database, a "connection" step is necessary to permit the corresponding Data Base Management System (DBMS) to allocate processing resources for servicing the database access request. Because a DBMS may not generally support multiple active connections to a specified database (e.g., DB2 for OS/2), overall system performance may deteriorate when a UA requires either (a) support for concurrent access to many databases, or (b) support for multiple connections to a specified database.
For example, if the UA must display information from different databases, responsive to user input, the UA may need to connect, access and disconnect from many different databases at various times. Also, if the UA is managing many different reports derived from the same database, several concurrent connections to that same database may be useful for optimizing reporting efficiency. Even where the DBMS supports multiple concurrent active connections, the procedure for establishing each such connection consumes substantial processor resources, especially if the database to be connected is a remote database. For instance, DB2 for OS/2 does not support multiple active connections to a specified database within a single process, requiring the spawning of multiple server processes to accomplish this.
Although the reconnection overhead burden is not a major problem in traditional database systems wherein UAs work with a single database, modern client/server environments introduce generalized client database user applications that support multiple database servers, requiring many concurrent accesses to different databases. One solution available for operating systems that support multiple processes is to spawn a new server process for each new database connection for UAs requiring multiple active database connections. The new server process handles all interaction for that particular connection between the UA and the database of interest and the UA's main process continues to service the user interface and display. Although this arrangement permits the UA to maintain multiple active connections to a single database, it does nothing to alleviate the significant processing overhead required to maintain each new connection and actually adds an additional performance burden for spawning each new process.
There is accordingly a clearly-felt need in the art for a method that maintains multiple concurrent active connections between a single or multiple databases and a user application without incurring new process and connection creation processing overhead responsive to every database access request. The related unresolved problems and deficiencies are clearly felt in the art and are solved by this invention in the manner described below.